home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 26.zip / BS1 part 26 / Master Devpac v1.0a.adf / MasterDevpac.DOC < prev    next >
Text File  |  1991-10-30  |  27KB  |  777 lines

  1. *****************************************************************************
  2. ***                                                                       ***
  3. ***                         MASTER DEVPAC V1.0a                           ***
  4. ***                       The Documentation File                          ***
  5. ***                         Written by D-TECT                             ***
  6. ***                                                                       ***
  7. ***   This file contains the documentations for genam, genim and monam!   ***
  8. ***                                                                       ***
  9. *****************************************************************************
  10.  
  11.  
  12. First words:
  13. ------------
  14. Ok, you're having one of the most powerful assembler in your drive but you
  15. don't know how to use it. That's no problem because we decided to write this
  16. little file which should give you advise how to work with the Master Devpac.
  17. Please notice that this is only a shortcut of the original Devpac V2.0 docu-
  18. mentation (We translate it from German into English)!!! If you like this
  19. assembler please consider buying the original!!!
  20.  
  21. At this point we want to send a little message to HiSoft:
  22. The only reason why we made this illegal piece of software is that we waited
  23. too long for Devpac Professional on the Amiga. On the Atari ST, however, it
  24. is available since a long time. So HiSoft, it's really YOUR fault! Believe
  25. us: We really don't like to do such illegal stuff (in fact we HATE it!) but
  26. with your lazyness you forced us to do it. We are not one of those shitty
  27. pirates: We HAVE the original of the Devpac!
  28.  
  29.  
  30.  
  31. ***************************************************
  32. *** THE EDITOR                    ***
  33. ***************************************************
  34.  
  35. The CLI command line:
  36. ---------------------
  37. There are several options your can set in command line when you start the
  38. editor from CLI:
  39.  
  40.         1> run mgenam2 [...]
  41.  
  42. The options are:   '-s' : sets the editor workspace (in kb!)
  43.                    '-x' : maximum of XREF's
  44.                    '+c' : case sensitive while assembly
  45.                    '-c' : lower case
  46.                    '+l' : produces linkable code
  47.                    '-l' : produces executable code
  48.                    '-w' : use window instead of screen
  49.                   
  50. Example:  1> run genam2 df0:myfile.s -s50 +c -x200 -l
  51. These options tell the editor to allocate 50kb, load the source code 'MyFile'
  52. from DF0:. The assembler will produce executable code while assembling with
  53. case sensitivity and the maximum amount of XREF's will be 200.
  54.  
  55.  
  56. The file requesters:
  57. --------------------
  58. We included the 'Requester Library' (req.library) instead of the old ARP Lib-
  59. rary because this one is much, much better. But if you don't like it you can
  60. also work with the old ARP Lib. Just don't copy the req.library in the 'libs'
  61. directory of your work disk.
  62. A very important thing is that we finally included a 'Delete File' requester.
  63. I'm sure you're be happy to hear this! 
  64.  
  65. I think there is no need to explain the functions of the file requester,
  66. don't you?
  67.  
  68.  
  69. Key combinations for the editor:
  70. --------------------------------
  71. Take a close look at the following because they're very important!
  72.  
  73. CURSOR-UP / CTRL-E        : Cursor up
  74. CURSOR-DOWN / CTRL-X        : Cursor down
  75. CURSOR-LEFT / CTRL-S        : Cursor left
  76. CURSOR-RIGHT / CTRL-D        : Cursor right
  77. RETURN / ENTER             : Return
  78. DELETE                : Deletes the actual cursor position
  79. BACKSPACE            : Deletes the char left to the cursor
  80. ALT-CURSOR-UP / RIGHT-AMIGA-T    : Jump to begin of text
  81. ALT-CURSOR-DOWN    / RIGHT-AMIGA-B : Jump to end of text
  82. ALT-CURSOR-LEFT            : Set cursor to begin of line
  83. ALT-CURSOR-RIGHT        : Set cursor to end of line
  84. SHIFT-CURSOR-UP / CTRL-R    : Jump one page up
  85. SHIFT-CURSOR-DOWN / CTRL-C    : Jump one page down
  86. SHIFT-CURSOR-LEFT / CTRL-A    : Set cursor to begin of left word
  87. SHIFT-CURSOR-RIGHT / CTRL-F    : Set cursor to begin of right word
  88. RIGHT-AMIGA-G            : Jump to a special line (requester appears!)
  89. RIGHT-AMIGA-Q            : Quit the editor
  90. CTRL-Y                : Delete actual line
  91. CTRL-Q                : Delete from cursor position till EOL
  92. RIGHT-AMIGA-C            : Clear source
  93. RIGHT-AMIGA-S            : Save source with file requester (Save As)
  94. RIGHT-AMIGA-SHIFT-S        : Save source without file requester (Save)
  95. RIGHT-AMIGA-L            : Load source/text
  96. RIGHT-AMIGA-I            : Insert file at cursor position
  97. RIGHT-AMIGA-O            : Change directory
  98. RIGHT-AMIGA-F            : Find Requester
  99. RIGHT-AMIGA-N            : Find next string
  100. RIGHT-AMIGA-P            : Find previous string
  101. RIGHT-AMIGA-R            : Replace string
  102. F1                : Mark begin of block
  103. F2                : Mark end of block
  104. F3                : Save block with file requester
  105. F4                : Copy block to actual cursor position
  106. F5                : Block paste
  107. F6                : Lowercase block
  108. F10                : Color Requester
  109. SHIFT-F3            : Delete block
  110. SHIFT-F4            : Block remember
  111. SHIFT-F5            : Block remember (?????????????????????)
  112. SHIFT-F6            : Uppercase block
  113. RIGHT-AMIGA-W            : Print block
  114. HELP / RIGHT-AMIGA-H        : Little help-menu with block functions
  115. RIGHT-AMIGA-A            : Assemble with requester
  116. RIGHT-AMIGA-SHIFT-A        : Assemble without requester
  117. RIGHT-AMIGA-X            : Start assembled programm
  118. RIGHT-AMIGA-SHIFT-X        : Start programm and enter command line
  119. RIGHT-AMIGA-D            : Debug (only when monam2 was loaded!)
  120. RIGHT-AMIGA-M            : Execute Debugger (")
  121. AMIGA-J                : Jump to next error
  122.  
  123. And now the normal system key combinations:
  124. -------------------------------------------
  125. LEFT-AMIGA-M            : Screen to front
  126. LEFT-AMIGA-N            : Screen to back
  127. RIGHT-AMIGA-Q            : Undo (in string gadget)
  128. RIGHT-AMIGA-X            : Clear string (in string gadget)
  129.  
  130. Some notes:
  131. -----------
  132. - It is possible to set the cursor on the screen with the mouse, too!
  133. - You can interrupt the find commands with 'ESC'.
  134. - Some people complained that the editor is so slow in scrolling. We think
  135.   this is no problem: Just use the page up/down function like we do!
  136.  
  137. Miscellaneous to the Preferences:
  138. ---------------------------------
  139. 'AutoIntend' means that the cursor will be set to the same x-position like in
  140. the previous. This is useful when you program with one or two tabs before
  141. the mnemonic. Additional we included a new feature: Press SHIFT-RETURN when
  142. AutoIntend is off and you have AutoIntend. When AutoIntend is turned on and
  143. you press SHIFT-RETURN you have no AutoIntend! Just try it!
  144. 'End of Line'. With this flag you can decide whether the cursor should stop
  145. at the end of each line or not.
  146. 'Full Size'. This is only useful when you prefer a window instead of a screen
  147. in the editor. It'll set the window to the maximum size.
  148. 'Mem Display'. With this you can decide if there should be displayed the
  149. free memory or the used memory in the status line.
  150.  
  151. Calculator instructions:
  152. ------------------------
  153.      ~  : not
  154.      -  : neg
  155.  
  156.      0-9: Dec
  157.      %  : Bin
  158.      @  : Oct
  159.      $  : Hex
  160.      '  : String (max 4 Chars, right filling) '' = ' im String
  161.      "  : String (max 4 Chars, right filling) "" = " im String
  162.  
  163.     shift left,shift right        << >>        ;Priority 5
  164.  
  165.     and                &        ;Priority 4
  166.     or                |        ;Priority 4
  167.     or                !        ;Priority 4
  168.     eor                ^        ;Priority 4
  169.  
  170.     multiply            *        ;Priority 3
  171.     divide                /        ;Priority 3
  172.  
  173.     plus                +        ;Priority 2
  174.     minus                -        ;Priority 2
  175.  
  176.     equal                = => <= <>    ;Priority 1
  177.  
  178.  
  179. The 3D Look:
  180. ------------
  181. We decided to use the new 3d look instead of the boring KickV1.3 look.
  182.  
  183.  
  184. ***************************************************
  185. *** The Assembler                ***
  186. ***************************************************
  187.  
  188. General info:
  189. -------------
  190. It has to be placed in the 'c' directory of your workdisk or harddisk (the
  191. debugger, too!). Then when you start the editor, the assembler and the debug-
  192. ger will be loaded at once, too.
  193.  
  194. The assembler of the Master Devpac is called 'genim2'. It can be executed
  195. from the editor. However you also call it from the CLI because it's also a
  196. stand-alone assembler.
  197.  
  198. The stand-alone assembler:
  199. --------------------------
  200. The command-line looks like this:
  201.  
  202.     1> genim2 MainFile <-options>
  203.  
  204. If the MainFile has no extention the standard extention '.s' will be used.
  205.  
  206. The options are:   '-B' : produces no binary file
  207.                    '-C' : no case-sensitive (OPT C-)
  208.                    '-D' : debug (OPT D+)
  209.                    '-L' : linkable code (OPT L+)
  210.                    '-M' : slow assemble mode (Danger: Not the same as OPT M+)
  211.                    '-O' : name of destination file. Follows 'O' without space
  212.                    '-P' : name of listing file. Follows 'P' without space
  213.                    '-Q' : wait until key pressed after assembly
  214.                    '-T' : tabulator set. Amount follows 'T' without space
  215.                    '-X' : extended debug (OPT X+). You need it if only the ex-
  216.                           ported symbols while generating linkable code should
  217.                           be exported (OPT X+)
  218.  
  219. Some examples:
  220. genim2 test -b               : assembles the file 'test.s' without producing a
  221.                                binary file. That's just a syntax check.
  222. genim2 test -oram:test -p    : assembles 'test.s' in the file 'ram:test' and
  223.                                produces a listing file called 'test.lst'
  224. genim2 test -ldpprt:         : assembles 'test.s' in linkable code with
  225.                                complete debug information and sends the
  226.                                listing to the parallel port.
  227.  
  228. The assembly event:
  229. -------------------
  230. Genim is a two-pass assembler. You can stop the assembly event text output by
  231. pressing any key and can continue with 'return'. With CTRL+C you can interrupt
  232. the assembler. But you shouldn't start the binary file because it's
  233. incomplete!
  234.  
  235. Labels:
  236. -------
  237. Labels normally begin in the first column. The colon (':') after the label is
  238. optional. But if the label begins in another column the colon is a must!
  239. Labels can begin with the chars a..z, A..Z, umlauts (ä,ö,ü) and the char '_'.
  240. Afterwards the chars 0..9 and the full stop ('.') are also allowed. Macro
  241. names and register equates mustn't contain full stops! Labels which begin
  242. with a full stop or number sequences which end with '$' are local labels. The
  243. standard of the significant label bytes is 127. Labels shouldn't have the
  244. same names as registers or reserved words like 'SR, CCR or USP'.
  245.  
  246. Some examples of correct labels:
  247. test, Test, TEST, _test, _test.end, test5, _5test
  248.  
  249. Some examples of incorrect labels:
  250. .test, 5test, _&e, test>
  251.  
  252. In genim there are only the reserved symbols _LK, _RS, _G2 which begin with
  253. the '_'.
  254.  
  255. Comments:
  256. ---------
  257. Every space or tab which isn't in quotation marks and is found after the
  258. operands is considered as the begin of the comment area which will be ignored
  259. by the assembler. Don't use spaces or tabs between the operands because this
  260. can't cause errors easily. Especially after the 'DC'!!!
  261.  
  262. rts ;that's ok!
  263. rts;that's wrong!
  264.  
  265. * that's a whole comment line
  266. ; that's also a whole comment line
  267.  
  268. Expressions:
  269. ------------
  270. Genim allows complex expressions and supports full operator priority, brackets
  271. and logical operations. There are two sorts of expressions: absolute and
  272. relative expressions. The difference is important. Absolute expressions are
  273. constants which are known to the assembler. Relative expressions are program
  274. addresses which are not known during the assembly event because the program
  275. can be put to any address by the AmigaDOS-Loader.
  276.  
  277. Operators in decreasing priority:
  278.  
  279. - plus sign (+), minus sign (-)
  280. - bit NOT (~)
  281. - shift left (<<) and shift right (>>)
  282. - equal (=), higher as (>) and lower as (<)
  283. - AND (&), OR (!) and XOR (^)
  284. - multiplication (*), division (/)
  285. - addition (+), subtraction (-)
  286.  
  287. The compare operators are ZERO when the expression is FALSE or -1 ($ffffffff)
  288. when it's TRUE.
  289.  
  290. Expressions with the same priority will be calculated from left to right.
  291. Spaces in expressions (except in strings) are not allowed.
  292.  
  293. All expressions will be calculated in 32 bit arithmetic with sign. There is
  294. no overflow test!
  295.  
  296. Numbers:
  297. --------
  298. Absolute numbers are possible in different ways:
  299. dec (1029), hex ($12f), oct (@730), bin (%1000101), chr ('X')
  300.  
  301. Char constants:
  302. ---------------
  303. They can have a max. length of 4 bytes. They must begin with '"' or "'", how-
  304. ever if you start with quotation marks you must also end with them! The same
  305. is for "'"!!! So the following example is incorrect: 'LAME"  (!!!!!)
  306.  
  307. Here are some examples:   "Q"     Q     $00000051
  308.                           'hi'    hi    $00006869
  309.                           "Test"  Test  $54637374
  310.                           "it's"  it's  $6974277c
  311.                           'it''s  it's  $6974277c
  312.  
  313. The strings in 'dc.b' are subject to the same rules.
  314.  
  315. The char '*' has the value of the counter at the begin of the program and is
  316. always relative.
  317.  
  318. General stuff:
  319. --------------
  320. The genim knows all common addressing types of the Motorola MC68000. You can
  321. write the mnemonics, register-names, etc. in capital letters or in small
  322. letters. The register names d0-d7 and a0-a7 can also be expressed as R0-R15.
  323.  
  324. Local labels:
  325. -------------
  326. Genim supports local labels. Local labels are labels which are only part of
  327. a special part of the source code. The have a leading full stop ('.') and
  328. depend on the previous non-local label.
  329.  
  330.     Length1:    move.l    4(sp),a0
  331.     .Loop:        tst.b    (a0)+
  332.             bne.s    .Loop
  333.             rts
  334.  
  335.     Length2:    move.l    4(sp),a0
  336.     .Loop:        tst.b    -(a0)
  337.             bne.s    .Loop
  338.             rts
  339.  
  340. In this example there are two local labels with the name '.Loop'. The first
  341. belongs to 'Length1' and the second to 'Length2'. To prevent misunderstand-
  342. ings with the absolute addressing you mustn't use '.w' and '.l' as local
  343. label names. If you want NORMAL labels with a leading full stop you must
  344. use OPT U+. Then you can declare local labels with the char '_'. Strings
  345. which end with a '$' are also local labels.
  346.  
  347. Symbols and Full stops:
  348. -----------------------
  349. There is a little problem when using symbols including full stops in genim.
  350. Just look at this example:
  351.  
  352.             move.l    Vector.w,d0
  353.  
  354. 'Vector' is an absolute value but the assembler thinks it's a label. So this
  355. will cause an >undefined label< error. To avoid this you should set the
  356. symbol in brackets:
  357.  
  358.             move.l    (Vector).w,d0
  359.  
  360. But you can certainly use the full stop after numeric expressions as e.g:
  361.  
  362.             move.l    $4.w,a6
  363.  
  364. The Instruction Set:
  365. --------------------
  366. Word boundary: All instructions except DC.B and DS.B will be assembled to
  367. word boundary. If you also want DC.B use on a word boundary you should use
  368. the 'EVEN' instruction.
  369.  
  370. Condidition codes: The alternative condition codes 'HS' and 'LO' equal to
  371. 'CC' and 'CS' will be supported in the Bcc, DBcc and Scc instructions.
  372.  
  373. Branches: A BRA.S to the following instruction is not allowed and will be
  374. replaced by a NOP!
  375.  
  376. BTST: BTST is unique compared with the other bit instructions, because the
  377. PC-relative addressing is allowed.
  378.  
  379. CLR: CLR An is not allowed. Use SUB.L An,An instead (Don't forget: This
  380. instructions won't set the flags!
  381.  
  382. CMP: If the source is immediate CMPI will be produced. If the destination is
  383. a address-register CMPA will be used. If you use a postincrement in both
  384. addressing modes a CMPM will be generated.
  385.  
  386. DBcc: DBRA will be accepted as DBF.
  387.  
  388. ILLEGAL: This instruction will generate the opcode-word $4afc
  389.  
  390. LINK: Genim displays a warning if the value is odd or positive.
  391.  
  392. MOVE from CCR: That's an instruction of the MC68010+ processors. It'll be
  393. converted into a MOVE from SR.
  394.  
  395. MOVEQ: Values between 128 and 255 will cause a warning. You can prevent this
  396. by using MOVEQ.L!
  397.  
  398. Assembler Directives:
  399. ---------------------
  400. All the assembler directives can be written in capital or small letters.
  401. '<' and '>' declare optional parameters.
  402.  
  403. Assembler Control:
  404. ------------------
  405. END:
  406. This command sets the end of the source file. Everything which comes
  407. after the END will be ignored by the assembler.
  408.  
  409. INCLUDE Filename: This command includes another source code part. The
  410. filename must be in the normal AmigaDOS format. If there is a space in
  411. it you have to set quotation marks.
  412.  
  413. INCDIR "Directory"<,"Directory" and so on>: This command builds a list of all
  414. the directories in which the assembler should search for the include files.
  415. This command must stand before the INCLUDE-command!
  416.  
  417. INCBIN Filename: With this command you can include a binary file at this
  418. position. So you don't have to convert them into DC-directives.
  419.  
  420. OPT Option <,Option>...: OPT makes it possible to set some assembler flags.
  421. The options begin with a char followed by a plus ('+') or minus ('-').
  422.  
  423. Here's a list of all the available options:
  424. -------------------------------------------
  425.  
  426. OPT A+: The PC-addressing mode will be used whenever possible. If you want to
  427.         skip this function in some parts of your program you should set the
  428.         expression in brackets followed by '.L'.
  429.  
  430. OPT C : Sets case-sensitive mode. This option has should stand at the
  431.         BEGINNING of your source! If you use OPT C- the source will be
  432.         assembled without case-sensitive. You also can set the significant
  433.         bytes of the labels with e.g. 'OPT C16+' (Now 16 bytes of the label-
  434.         name are significant.
  435.  
  436. OPT D : Debugging information. If you use 'OPT D+' genim will create a debug
  437.         hunk after the normal hunks of your program. This is very useful
  438.         while debugging because you can work with the real label names
  439.         instead of memory addresses. But don't forget to remove this hunk
  440.         before you spread you program because it's VERY easy to make a source
  441.         code out of it again!!!
  442.  
  443. OPT L : If you use the option 'OPT L+' genim will produce linkable code
  444.         instead of executeable code. This directive MUST stand at the FIRST
  445.         line of the source!!!
  446.  
  447. OPT M : 'OPT M+' is called macro-expansion. This will change the assembler
  448.         listing a little bit because the whole MACRO calls will be replaced
  449.         by the real macro code. With 'OPT M-' you can turn this off.
  450.  
  451. OPT N : Narrow listing. This option is used for printers which can't print
  452.         more than 80 chars in one line. So this option will produce a listing
  453.         without line numbers and object code. Use 'OPT N-' to change to
  454.         normal mode.
  455.  
  456. OPT O : Optimize option.
  457.         OPT O1+ : Optimizes backwards branches when possible. Turn of with
  458.                   O1-
  459.         OPT O2+ : Optimizes 'move.l Value(a0),d3' in 'move.l (a0),d3' when
  460.                   Value is NULL.
  461.         OPT O+  : Turns on all optimizations
  462.         OPT O-  : Turns them off
  463.         OPT OW- : The warnings concerning the optimization will be skipped.
  464.  
  465. OPT P : This option checks whether the code is pc-relative or not. Turn off
  466.         with 'OPT P-'.
  467.  
  468. OPT S : 'OPT S+' turns the symbol table in the assembler listing on. You
  469.         should turn this function off when using include files because the
  470.         symbol table will become very long.
  471.  
  472. OPT T : Type Check. Genam can detect bugs in your programs by checking your
  473.         expressions. It checks whether they are absolute or relative. You
  474.         can turn on the Type Check with 'T+' and off with 'T-'.
  475.  
  476. OPT U : If you use this option local labels have to begin with '_' instead
  477.         of the full stop.
  478.  
  479. OPT W : You can turn the warnings off with 'W-'
  480.  
  481. OPT X : Extended Debug. With this optinion on symbols will be put out with
  482.         a length of 22 instead of 8 chars.
  483.  
  484. EVEN bounds the program counter to an even address (word boundary!). You
  485. don't need EVEN very often because genim bounds all commands on word
  486. boundary automatically! But in spite of this it's better to use then EVEN
  487. command in every case!
  488.  
  489. CNOP offset,boundary. I don't explain this because everybody should know
  490. it.
  491.  
  492. FAIL. This is used to produce a user error. You can let the assembler fail
  493. if there are e.g. too much macro arguments.
  494.  
  495. OUTPUT filename. With this you can set the name of the output file.
  496.  
  497. REPT/ENDR. This is a repeat loop. An example:
  498.  
  499.         REPT 512/4    ;Fast copy of sector data
  500.         move.l    (a0)+,(a1)+
  501.         ENDR
  502.  
  503. These three lines let the assembler assemble the line 'move.l (a0)+,(a1)+'
  504. 128 times. So you don't have to write this line 128 times in your source.
  505. But don't try to define labels between a REPT/ENDR loop because this makes
  506. a 'label defined twice' error appear!
  507.  
  508.  
  509. Listing control:
  510. ----------------
  511. Here's only a little overview over these commands because I think this
  512. isn't very useful... (Buy the original if you what the complete docs! Hehe)
  513.  
  514. LIST        : Listing on
  515. NOLIST        : Listing off
  516. LLEN        : Set page length
  517. PLEN        : Set line length
  518. TTL        : Set title
  519. SUBTTL        : Set subtitle
  520. SPC        : Give out space
  521. PAGE        : Page feed
  522. LISTCHAR    : Give out control char
  523. FORMAT        : Definies listing format
  524.  
  525. Label instructions:
  526. -------------------
  527. Label EQU expression    : Same as 'Label = expression'
  528.  
  529. Label EQUR Register    : With this instruction you can give a register a
  530.                           special name. Don't forget to define the register
  531.                           equate before using it!
  532.  
  533. Label SET expression    : Nearly the same as EQU. There is one difference:
  534.               You can give a label different values in one
  535.               source! That means that the value of the label
  536.               can change after some lines.
  537.  
  538. Label REG Registerlist    : This is used to prevent mistakes with the movem
  539.               command. You can simply write later in the source:
  540.                MyRegs REG d0-d7
  541.                 movem.l    MyRegs,-(sp)
  542.               and    movem.l    (sp)+,MyRegs
  543.               is the same as:
  544.                 movem.l    d0-d7,-(sp)
  545.               and    movem.l    (sp)+,d0-d7
  546.  
  547. RS. This is used to define offsets. Here an example:
  548.  
  549.         rsreset
  550.         Blub:    rs.l    1
  551.         Hugo:    rs.w    1
  552.         Bert:    rs.b    1
  553.  
  554. Now you can read out of the list with:
  555.  
  556.         (a0 has to point at the beginning of the list)
  557.         move.l    Blub(a0),d0        ;Blub=0
  558.         move.w    Hugo(a0),d1        ;Hugo=4
  559.         move.b    Bert(a0),d2        ;Bert=6
  560.  
  561. I think that's a very useful instruction.
  562.  
  563. RSRESET. This instruction resets the counter.
  564.  
  565. RSSET. Sets the counter to a special value.
  566.  
  567. RS. This is a reserved symbol. It always contains the actual value of the
  568. rs-counter.
  569.  
  570.  
  571. Conditional Assembly:
  572. ---------------------
  573. Conditional assembly allows you to write a program that has many internal
  574. options, which you can choose while assembly.
  575.  
  576. This can be very useful for different reasons:
  577. - The program shall work on two machines
  578. - You want to insert debug-code
  579. - Two slightly different versions of one program are needed
  580.  
  581. These directives were all needed while developing the Devpac.
  582.  
  583. At the beginning of a comditional block must be one of the many IF-directives.
  584.  
  585. IFEQ    Expression
  586. IFNE    Expression
  587. IFGT    Expression
  588. IFGE    Expression
  589. IFLT    Expression
  590. IFLE    Expression
  591.  
  592. The Expression is calculated and the compared with 0 and then the conditional
  593. assembly is switched on or off depending on the result of the expression.
  594.  
  595. Example: DEBUG has the value 1
  596.  
  597.     IFEQ    DEBUG
  598. logon    dc.b    "enter command: ",0
  599.     EDNC
  600.     IFNE    DEBUG
  601.     opt d+
  602. logon:    dc.b    "come on!",0
  603.     ENDC
  604.  
  605.  
  606. In this case the first part is not assembled because 1 is not equal (not EQ) 0
  607. and the second part is assembled because 1 is not equal (NE) 0.
  608.  
  609. IFD    Label
  610. IFND    Label
  611.  
  612. This directive allows you to check the existence of the 'Label'. If you
  613. use IFD the assembly will be turned off if 'Label' exists. 
  614.  
  615. IFC    'String1','String2'
  616.  
  617. This directive allows you to let the assembly depend on the contents of
  618. two strings. If both are equal the assembly will be turned on.
  619.  
  620. IFNC    'String1','String2'
  621.  
  622. Same as above except that the assembly will be turned off if the strings are
  623. equal.
  624.  
  625. ELSEIF
  626. With this directive you can turn the conditional assembly on/off.
  627.  
  628. ENDC
  629. This terminates the actual IF-level. (it's like ENDIF in BASIC)
  630.  
  631. IIF expression command
  632. This is a special kind of the IF instruction. It's only used for ONE
  633. command. So it's a short form if the IF instruction. BTW: You shouldn't
  634. terminate IIF with ENDC.
  635.  
  636.  
  637. Macro Operations:
  638. -----------------
  639. Macro's in Devpac can handle up to 36 different parameters.
  640.  
  641. Label MACRO
  642. This instruction starts the macro definition. All the following lines will
  643. be copied into the macro buffer until the ENDM instructions appears.
  644.  
  645. ENDM
  646. This instruction terminates the macro definition. You can't define a label
  647. in a line which contains the ENDM instruction.
  648.  
  649. MEXIT
  650. Terminates the macro development.
  651.  
  652. NARG
  653. This is a reserved symbol. It contains the amount of values which each
  654. macro call has or ZERO if the assembler isn't in a macro. Note: You
  655. have to write NARG in capital letters.
  656.  
  657. Each macro parameter has a number (from 1 to 36). Before every number there
  658. has to be a backslash '\'. There is one exception: \@ is also a valid
  659. macro parameter. This will create different labels by every macro call.
  660.  
  661. Here an example:
  662.  
  663. WAITBLIT    MACRO
  664. .\@:        btst    #6,$dff002
  665.         bne.s    .\@
  666.         ENDM
  667.  
  668. You can use this macro as often as you want: There won't be a 'label defined
  669. twice'-error.
  670.  
  671.  
  672. Sections:
  673. ---------
  674. Section string,<type>. String is the section name. Here are the different
  675. section types:
  676.         CODE        Code-section, Public Memory
  677.         CODE_F        Code-section, Fast Memory
  678.         CODE_C        Code-section, Chip Memory
  679.         DATA        Data-section, Public Memory
  680.         DATA_F        Data-section, Fast Memory
  681.         DATA_C        Data-section, Chip Memory
  682.         BSS        BSS-section, Public Memory
  683.         BSS_F        BSS-section, Fast Memory
  684.         BSS_C        BSS-section, Chip Memory
  685.  
  686. Example:    section    MyProgram,code_c
  687.  
  688. When you chose this section type the AmigaDOS loader will always load your
  689. program in CHIP memory. That's very useful!
  690.  
  691.  
  692.  
  693. ***************************************************
  694. *** Monam - The Debugger            ***
  695. ***************************************************
  696.  
  697. Here a little overview over all Monam commands. Sorry but we have really
  698. no time to translate the whole documentation! (Give me a scanner...)
  699.  
  700. Window-Commands:
  701. ----------------
  702. RIGHT-AMIGA-A        : Set Start Address
  703. RIGHT-AMIGA-B        : Set Breakpoint
  704. RIGHT-AMIGA-E        : Edit Window
  705. RIGHT-AMIGA-F        : Font Size
  706. RIGHT-AMIGA-L        : Bind Window
  707. RIGHT-AMIGA-O        : Calculate expression
  708. RIGHT-AMIGA-P        : Printer dump
  709. RIGHT-AMIGA-R        : Set register
  710. RIGHT-AMIGA-S        : Split window
  711. RIGHT-AMIGA-T        : Change Window type
  712. RIGHT-AMIGA-Z        : Zoom window
  713.  
  714. Breakpoints:
  715. ------------
  716. RIGHT-AMIGA-B        : Set Breakpoint
  717. HELP            : Breakpoint and Segment overview
  718. CTRL-B            : Set Breakpoint
  719. U            : Go until
  720. CTRL-K            : Delete all Breakpoints
  721. CTRL-A            : Set Breakpoint and execute
  722. CTRL-X            : Stop execution
  723.  
  724. Load and Save:
  725. --------------
  726. CTRL-L            : Load executable
  727. B            : Load binary
  728. S            : Save binary
  729. A            : Load ASCII and execute programs
  730.  
  731. Program execution:
  732. ------------------
  733. CTRL-R            : Back to program/Run
  734. CTRL-Z            : Single Step
  735. CTRL-Y            : Single Step
  736. CTRL-T            : Trace
  737. R            : Run (different types)
  738.  
  739. Memory peeker:
  740. --------------
  741. G            : Search in memory
  742. N            : Next occurence
  743.  
  744. Miscellaneous:
  745. --------------
  746. CTRL-C            : Break
  747. CTRL-Q            : Quit
  748. CTRL-P            : Preferences
  749. I            : Intelligent copy
  750. W            : Fill memory
  751. L            : Show Labels
  752. CTRL-U            : Deallocate Symbols
  753. P            : Disassemble to printer/disk
  754. M            : Change address
  755. O            : Evaluate
  756. D            : Change drive and path
  757. H            : Show history
  758.  
  759.  
  760.  
  761. ***************************************************
  762. *** The last words...                ***
  763. ***************************************************
  764.  
  765. Contact us:
  766. -----------
  767. If you have any suggestions or if you find a bug in this piece of software
  768. please consider contacting a D-TECT member. Sorry, but no addresses here!
  769.  
  770.  
  771.  
  772. *****************************************************************************
  773. ***                  Another D-TECT production in 1991                    ***
  774. ***                   Spread the disk AND the word...                     ***
  775. ***                      German quality production                        ***
  776. *****************************************************************************
  777.